﻿using System;
using System.Configuration;
using System.Windows;

namespace AccountManagement
{
    public static class Utils
    {
        public static void ShowMessage(int messageNumber)
        {
            switch (messageNumber)
            {

                case Constants.Errors.NONE_ADD_PHIEUTHU:
                    MessageBox.Show("Thêm Phiếu Thu mới thành công.", "Thông báo", MessageBoxButton.OK,
                                    MessageBoxImage.Information);
                    break;
                case Constants.Errors.UNKNOW:
                    MessageBox.Show("Có lỗi xảy ra trong quá trình thêm phiếu thu mới, vui lòng xem file log để biết thêm chi tiết.", "Lỗi", MessageBoxButton.OK,
                                    MessageBoxImage.Error);
                    break;
                case Constants.Errors.EXISTED:
                    MessageBox.Show("Có lỗi xảy ra: Phiếu đã tồn tại trong cơ sở dữ liệu.", "Lỗi", MessageBoxButton.OK,
                                    MessageBoxImage.Error);
                    break;
                case Constants.Errors.NOT_EXISTED:
                    MessageBox.Show("Có lỗi xảy ra: Phiếu không tồn tại hoặc đã bị xóa.", "Lỗi", MessageBoxButton.OK,
                                    MessageBoxImage.Error);
                    break;
                case Constants.Errors.TK_NO_NOT_EXISTED:
                    MessageBox.Show("Tài khoản nợ không đúng hoặc không tồn tại.", "Lỗi", MessageBoxButton.OK,
                                    MessageBoxImage.Error);
                    break;
                case Constants.Errors.TK_CO_NOT_EXISTED:
                    MessageBox.Show("Tài khoản có không đúng hoặc không tồn tại.", "Lỗi", MessageBoxButton.OK,
                                    MessageBoxImage.Error);
                    break;
                case Constants.Errors.TK_THUE_NOT_EXISTED:
                    MessageBox.Show("Tài khoản thuế không đúng hoặc không tồn tại.", "Lỗi", MessageBoxButton.OK,
                                    MessageBoxImage.Error);
                    break;
                case Constants.Errors.NONE_EDIT_PHIEUTHU:
                    MessageBox.Show("Cập nhật Phiếu Thu thành công.", "Thông báo", MessageBoxButton.OK,
                                    MessageBoxImage.Information);
                    break;
                case Constants.Errors.NONE_ADD_PHIEUCHI:
                    MessageBox.Show("Thêm Phiếu Chi mới thành công.", "Thông báo", MessageBoxButton.OK,
                                    MessageBoxImage.Information);
                    break;
                case Constants.Errors.NONE_EDIT_PHIEUCHI:
                    MessageBox.Show("Cập nhật Phiếu Chi mới thành công.", "Thông báo", MessageBoxButton.OK,
                                    MessageBoxImage.Information);
                    break;

                default:
                    break;
            }
        }

        public static int GetQuyenSoThu()
        {
            try
            {
                return Convert.ToInt32(ConfigurationManager.AppSettings.Get("QuyenSoPhieuThu"));
            }
            catch (Exception)
            {
                return -1;
            }
        }

        public static int GetPhieuSoThu()
        {
            try
            {
                return Convert.ToInt32(ConfigurationManager.AppSettings.Get("PhieuSoPhieuThu"));
            }
            catch (Exception)
            {
                return -1;
            }
        }

        public static void SetQuyenSoThu(int quyenSo)
        {
            try
            {
                // Set PhieuSo to App.Config
                var oConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                oConfig.AppSettings.Settings["QuyenSoPhieuThu"].Value = quyenSo.ToString();
                oConfig.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection("appSettings");
            }
            catch (Exception)
            {
                
            }
        }

        public static void SetPhieuSoThu(int phieuSo)
        {
            try
            {
                if (phieuSo > 99)
                {
                    phieuSo = 1;
                    var quyenSo = Convert.ToInt32(ConfigurationManager.AppSettings.Get("QuyenSoPhieuThu"));
                    SetQuyenSoThu(quyenSo + 1);
                }
                
                // Set PhieuSo to App.Config
                var oConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                oConfig.AppSettings.Settings["PhieuSoPhieuThu"].Value = phieuSo.ToString();
                oConfig.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection("appSettings");
            }
            catch (Exception)
            {
                
            }
        }

        public static int GetQuyenSoChi()
        {
            try
            {
                return Convert.ToInt32(ConfigurationManager.AppSettings.Get("QuyenSoPhieuChi"));
            }
            catch (Exception)
            {
                return -1;
            }
        }

        public static int GetPhieuSoChi()
        {
            try
            {
                return Convert.ToInt32(ConfigurationManager.AppSettings.Get("PhieuSoPhieuChi"));
            }
            catch (Exception)
            {
                return -1;
            }
        }

        public static void SetQuyenSoChi(int quyenSo)
        {
            try
            {
                // Set PhieuSo to App.Config
                var oConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                oConfig.AppSettings.Settings["QuyenSoPhieuChi"].Value = quyenSo.ToString();
                oConfig.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection("appSettings");
            }
            catch (Exception)
            {

            }
        }

        public static void SetPhieuSoChi(int phieuSo)
        {
            try
            {
                if (phieuSo > 99)
                {
                    phieuSo = 1;
                    var quyenSo = Convert.ToInt32(ConfigurationManager.AppSettings.Get("QuyenSoPhieuChi"));
                    SetQuyenSoChi(quyenSo + 1);
                }

                // Set PhieuSo to App.Config
                var oConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                oConfig.AppSettings.Settings["PhieuSoPhieuChi"].Value = phieuSo.ToString();
                oConfig.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection("appSettings");
            }
            catch (Exception)
            {

            }
        }
    }
}
